package com.mx.kn.cstf2.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import com.mx.kn.cstf2.dts.FilesUploadDts;
import com.mx.kn.cstf2.dts.JoindocumenttransitionDts;
import com.mx.kn.cstf2.dts.PersonOptions;

import kn.cstf2.transition.Bean.AsignIfownerStkBean;
import kn.cstf2.transition.Bean.JoinPersonTransitionBean;
import kn.cstf2.transition.Bean.Localidad;
import kn.cstf2.transition.Bean.PersonalBean;
import kn.cstf2.transition.Bean.T_clientesDataFromStkBean;
import kn.cstf2.transition.Bean.TransitionBean;

import com.mx.kn.cstf2.dto.CatalogoBranchDto;
import com.mx.kn.cstf2.dto.CopCompanyDto;
import com.mx.kn.cstf2.dto.CorreosBranchDto;
import com.mx.kn.cstf2.dto.HistoricoDto;
import com.mx.kn.cstf2.dto.JoinUserTransitionDto;
import com.mx.kn.cstf2.dto.LinksDto;
import com.mx.kn.cstf2.dto.TransitionBranchDto;
import com.mx.kn.cstf2.dto.UsuarioDto;

public interface TransitionDao {
	public void setDataSourceStkfsf2(DataSource dataSourceStkfsf2) throws SQLException;
	public void setDataSourceCustomerSalesToolKit(DataSource dataSourceCustomerSalesToolKit) throws SQLException;
	public ArrayList<String> getListaNombreDePersonal() throws SQLException;
	public TransitionBean obtenerTransitionBeanByKnkeyAndId(TransitionBean transitionBean) throws SQLException;
	public FilesUploadDts verifyUploaded(TransitionBean transition) throws SQLException;
	public TransitionBean obtenerJoindocumenttransitionDetail(int RATE_TRACKER, int ACON_DEBTOR_NUMBER, Integer transitionId)  throws SQLException;
	public String obtenerTransitionLog(TransitionBean transition) throws SQLException;
	public void actualizarLogEnTransition(TransitionBean transitionBean) throws SQLException;
	public T_clientesDataFromStkBean obtenerDataFromTClientesSTK(TransitionBean transitionBean) throws SQLException;
	public AsignIfownerStkBean obtenerIfOwnerFromSTK(TransitionBean transitionBean) throws SQLException;
	public JoindocumenttransitionDts selectVoBoEnJoindocumenttransition(Integer idtransition) throws SQLException;
	public ArrayList<PersonalBean> obtenerDataPersonalByIdPersonal(Integer idp) throws SQLException;
	public ArrayList<Localidad> branch()  throws SQLException;
	public String getLocality(Integer knkey) throws SQLException;
	public String validateBranch(Integer knkey) throws SQLException;
    public JoindocumenttransitionDts obtenerJoindocumenttransitionData(TransitionBean transitionBean) throws SQLException;
    public void updateCheckbox(JoindocumenttransitionDts joindocumenttransitionBean, int iddocument) throws SQLException;
    public Map<Integer,Boolean> checkCheckbox(JoindocumenttransitionDts joindocumenttransitionBean) throws SQLException;
    public Integer verificarCountJoinusertransition(JoinPersonTransitionBean joinPersonTransitionBean) throws SQLException;
    public void eliminarRelacionJoinPersontransitionByIdPerson(Integer idperson, Integer idtransition) throws SQLException;
    public void eliminarPersonalById(PersonalBean personalBean) throws SQLException;
    public void insertarJoinPersonTransition(PersonalBean personalBean, TransitionBean transitionBean) throws SQLException;
    public PersonalBean insertarDataPersonal(PersonalBean personalBean) throws SQLException;
    public PersonalBean obtenerDataPersonalByEmail(String mail) throws SQLException;
    public JoindocumenttransitionDts actualizarVoBoEnJoindocumenttransition(JoindocumenttransitionDts joindocumenttransitionBean, String fecha) throws SQLException;
    public TransitionBean actualizarStatusEnTransition(TransitionBean transitionBean, Date date, String userName) throws SQLException;
    public TransitionBean actualizarStatusEnImplementation(TransitionBean transitionBean, String userName) throws SQLException;
    public PersonalBean obtenerDataPersonal(TransitionBean transitionBean) throws SQLException;
    public PersonalBean obtenerDataPersonalByName(String name) throws SQLException;
    public ArrayList<PersonalBean> obtenerDataPersonalByKnkey(Integer knkey) throws SQLException;
    public PersonalBean obtenerDataPersonalById(Integer id) throws SQLException;
    public TransitionBean getLastDateUpdate(TransitionBean transitionBean) throws SQLException;
    public TransitionBean insertLastDateUpdateComment(TransitionBean transitionBean, Date date,String userName) throws SQLException;
    public TransitionBean getLastDateUpdateComment(TransitionBean transitionBean)throws SQLException;
    public void actualizarDetailsEnJoindocumenttransition(String detailsnum, Integer documentid, Integer transitionId) throws SQLException;
    public TransitionBean actualizarlastDateUpdateRequeri(Integer id, Integer knkey, String userName) throws SQLException;
    public TransitionBean getLastDateUpdateRequi(TransitionBean transitionBean)	throws SQLException;
    public boolean checkIfExistTransaction(int knkey) throws SQLException;
    public void newTransition(int knKey, UsuarioDto usuario) throws SQLException;
    public void updateUploadedFile(int idFile, int idTransaction, String detail) throws SQLException;
    public JoindocumenttransitionDts getJoinDocumentTransaction(int idDocument, int idTransition) throws SQLException;
    public void updateJoinTransitionDocuments(Map<Integer,Boolean> checkBoxs, int idTransition) throws SQLException;
    public void insertHistorico(HistoricoDto historico) throws SQLException;
    public List<JoindocumenttransitionDts> getEstatusAndDateDocuments(TransitionBean transition) throws SQLException;
    public List<PersonOptions> getPersonalAdd(TransitionBean transition) throws SQLException;
    public TransitionBean setLastDateUpdateSubmitFileImplementation(TransitionBean transition, Date date, String userName)throws SQLException;
    public void InsertaClienteGrid(Integer iduser, Integer idtransition); 
    public List<JoinUserTransitionDto> validaExistenciaCliente(Integer iduser, Integer idtransition);
    public List<CatalogoBranchDto> obtieneCatalogoBranch();
    public List<CatalogoBranchDto> obtieneBranchAndMails(TransitionBean transitition);
    public List<CorreosBranchDto> obtieneCorreosByBranch(CatalogoBranchDto catalogoBranchDto);
    public void eliminarBranch(CatalogoBranchDto catalogoBranchDto, TransitionBean transitionBean);
    public void insertaBranch(Integer idTransition, Integer idBranch);
    public List<TransitionBranchDto> validaExistenciaBranch(Integer idTransition, Integer idBranch);
    public void newCopTransition(CopCompanyDto compania, UsuarioDto usuario) throws SQLException;
    public TransitionBean getBothStatus(Integer idTransition)throws SQLException;
    public void deleteClient(Integer idTransition) throws SQLException;
    public boolean checkFlow(Integer knKey, UsuarioDto usuario) throws SQLException;
}
